package com.kt.common.func

import java.util.concurrent.locks.Lock


inline fun <T> lock(body: () -> T): T {
    return body()
}

/**
 * 此处a 为内联函数 ，b为非内联函数
 */
inline fun foo(a:()->Unit ,noinline b:()->Unit){
    a()
    b()
}

fun main() {
    /*val lock = lock {
        "sjh"
    }
    println(lock)*/
    foo(a={
        println("这是非内联函数")
    }){
        println("这是内联函数")
    }


}

fun ordinaryFunction(a:  (String)-> Unit){}
//lambda表达式中内联函数不可以直接return 需return@Fun
//fun foo() {
//    ordinaryFunction {
//        return@ordinaryFunction // 错误：不能使 `foo` 在此处返回
//    }
//}

//lambda中内联函数可以 直接使用return
/*fun foo11() {
    inline ordinaryFunction {
        return // OK：该 lambda 表达式是内联的
    }
}*/
